package gspushmq.v1.app.subscribeapp.enumeration;
/**
 * 
 * 消息状态枚举值
 * 
 * @version 1.0
 * @since JDK1.7
 * @author yaomy
 * @company 上海朝阳永续信息技术有限公司
 * @copyright (c) 2018 SunTime Co'Ltd Inc. All rights reserved.
 * @date 2018年5月18日 上午10:03:52
 */

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public enum MsgStatusEnum {

	READY_PUSH(1, "待推送"),
	HAS_PUSHED(2, "已推送"),
	CANCL_PUSH(3, "取消推送"),
	EXPIRED_PUSH(4, "失效"),
	HAS_PUSH_THIRD(5,"已推动送至第三方平台");
	
	private int status;
	private String statusName;
	
	private MsgStatusEnum(int status, String statusName) {
		this.status = status;
		this.statusName = statusName;
	}
	
	public int getStatus() {
		return this.status;
	}
	
	public String getStatusName() {
		return this.statusName;
	}
	/**
	 * 
	 * 方法描述 通过消息状态获取对应的枚举实例
	 *
	 * @param msgStatus 消息状态
	 * @return
	 * 
	 * @author yaomy
	 * @date 2018年5月18日 上午10:04:57
	 */
	public static MsgStatusEnum fromMsgStatus(int msgStatus) {
		for(MsgStatusEnum statusEnum : MsgStatusEnum.values()) {
			if(statusEnum.status == msgStatus) {
				return statusEnum;
			}
		}
		return null;
	}
	/**
	 * 
	 * 方法描述 通过消息状态获取消息名称
	 *
	 * @param msgStatus 消息状态
	 * @return
	 * 
	 * @author yaomy
	 * @date 2018年5月18日 上午10:04:34
	 */
	public static String fromMsgStatusName(int msgStatus) {
		MsgStatusEnum statusEnum = fromMsgStatus(msgStatus);
		return statusEnum == null ? null : statusEnum.statusName;
	}
	/**
	 * 
	 * 方法描述 获取消息推送的枚举值列表key--value
	 *
	 * @return
	 * 
	 * @author yaomy
	 * @date 2018年5月18日 上午10:17:30
	 */
	public static List<Map<String, Object>> fromMsgStatusKeyToValue(){
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    	for(MsgStatusEnum statusEnum : MsgStatusEnum.values()) {
    		Map<String, Object> map = new HashMap<String, Object>();
    		map.put("status", statusEnum.status);
    		map.put("status_name", statusEnum.statusName);
    		list.add(map);
    	}
    	return list;
	}

	public void setStatus(int status) {
		this.status = status;
	}

	public void setStatusName(String statusName) {
		this.statusName = statusName;
	}
}
